package com.iman.sumer.web;

import java.text.SimpleDateFormat;
import java.util.Date;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.commons.lang3.math.NumberUtils;
import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.servlet.ModelAndView;

import com.iman.common.util.ConfigUtil;
import com.iman.sumer.domain.SessionBean;

/**
 * you can use this initBinder() to bind string to date , or
 * you can user @DateTimeFormat(style="S-", iso=DateTimeFormat.ISO.DATE) annoation to bind string to date.
 */
public abstract class BaseController {
    public static final String defaultDateFormat = "yyyy-MM-dd";

    @InitBinder
    public void initBinder(WebDataBinder binder) {
        SimpleDateFormat dateFormat = new SimpleDateFormat(getDateFormat());
        dateFormat.setLenient(false);
        binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
    }

    //如果有需求：日期格式不是yyyy-MM-dd,则需要覆盖这个方法。
    public String getDateFormat() {
        return defaultDateFormat;
    }
    
    
	
	
/********************************加入资源路径*********************************************************/
	
	public  void putResourceSrc(ModelAndView view,HttpServletRequest request){
		 //图片的域名  	   
		 String imgbasePath  = ConfigUtil.getString( "image.server" );
		 //css 服务器连接    在 context.properties 配置
		 String cssbasePath  = ConfigUtil.getString( "css.server" );
		 //css 服务器连接    在 context.properties 配置
		 String jsbasePath  = ConfigUtil.getString( "js.server" );
		 // 图片访问
		 String drmFilePath = ConfigUtil.getString("drmFile.server");
		 
		 view.addObject("drmFilePath", drmFilePath);
		 view.addObject("imgpath", imgbasePath);
		 view.addObject("csspath", cssbasePath);
		 view.addObject("jspath", jsbasePath);
		 
		 SessionBean usersession = this.getSession(request);
		 view.addObject( "loginUser", usersession.getUser().getLoginName());
	}
	
	
	/**
	 * 
	 *  Function:
	 *  功能说明： 获取session
	 *	 使用说明：
	 *  @author  wangxiaolei  DateTime 2014年12月18日 下午12:24:48
	 *	返回类型: SessionBean    
	 *  @param request
	 *  @return
	 */
	public SessionBean getSession(HttpServletRequest request){
		HttpSession session = request.getSession();
		SessionBean	 sessionBean = (SessionBean)session.getAttribute(SessionBean.USER_SESSION_KEY_PERFIX+SessionBean.USER_SESSION_SUBKEY_SESSION );
		return sessionBean;
	}
	
	
	/**
	 * 
	 *  Function:
	 *  功能说明： 获取session  获取sessionid  用户ID  
	 *	 使用说明：
	 *  @author  wangxiaolei  DateTime 2014年12月18日 下午12:24:48
	 *	返回类型: SessionBean    
	 *  @param request
	 *  @return
	 */
	public Long getUserIdInSession(HttpServletRequest request){
		HttpSession session = request.getSession();
		SessionBean	 sessionBean = (SessionBean)session.getAttribute(SessionBean.USER_SESSION_KEY_PERFIX+SessionBean.USER_SESSION_SUBKEY_SESSION );
		if(sessionBean.getUser()!=null){
			return sessionBean.getUser().getUserId();
		}
		
		return null;
	}
	
	
	/**
	 * 
	 *  Function:
	 *  功能说明：判断当前登录查看的人员的showID ,和该人  登陆的ID是否一致，也有可能没有登录
	 *	 使用说明：
	 *  @author  wangxiaolei  DateTime 2015年5月25日 下午10:22:56
	 *	返回类型: boolean    
	 *  @param request
	 *  @param showId
	 *  @return  true  表示 当前查看的是自己
	 */
	public   boolean isMeData(HttpServletRequest request,String showId){
		Long  userId = this.getUserIdInSession(request);
		if(NumberUtils.isNumber(showId)  && userId!=null  && NumberUtils.toLong(showId )  == userId.longValue()){
			return true;
		}else if(!NumberUtils.isNumber(showId)  && userId !=null ){
			return  true;
		}
		return false;
	}
	public   boolean isMeData(HttpServletRequest request,Long showId){
		Long  userId = this.getUserIdInSession(request);
		if( showId !=null  && userId!=null  && (showId )  == userId.longValue()){
			return true;
		}else if( showId == null && userId !=null ){
			return  true;
		}
		return false;
	}
	/**
	 * 
	 *  Function:
	 *  功能说明：如果需要设置  当前 展示人员的ID  ，为了 跳转  分页  传递蚕食使用
	 *	 使用说明：
	 *  @author  wangxiaolei  DateTime 2015年5月25日 下午10:22:24
	 *	返回类型: void    
	 *  @param view
	 *  @param showId
	 */
	public  void putShowId(ModelAndView view,String showId,boolean  isMeData){
		 view.addObject("showId", showId);
		 view.addObject("isMeData", isMeData);
	}
	
	public  void putShowId(ModelAndView view,Long  showId,boolean  isMeData){
		 view.addObject("showId", showId);
		 view.addObject("isMeData", isMeData);
	}
}
